package fumec.br.ia.search;


public class No implements Comparable<No>{
	private IAcao acao;
	private No noPai;
	private IEstado estado;
	private Integer profundidade;
	private Double custo;
	
	public No(IEstado estado){
		this.setEstado(estado);
	}

	public void setCusto(Double custo){
		this.custo = custo;
	}
	
	public Double getCusto(){
		return this.custo;
	}
	
	public No getPai(){
		return this.noPai;
	} 
	
	public void setPai(No pai){
		this.noPai = pai;
	} 
	
	public IAcao getAcao(){
		return this.acao;
	}
	
	public void setAcao(IAcao acao){
		this.acao = acao;
	}

	public IEstado getEstado() {
		return estado;
	}

	public void setEstado(IEstado estado) {
		this.estado = estado;
	}

	public Integer getProfundidade() {
		return profundidade;
	}

	public void setProfundidade(Integer profundidade) {
		this.profundidade = profundidade;
	}

	@Override
	public int compareTo(No no) {
		Double custoAtual = this.getCusto() + this.getEstado().eval();
		Double custoDestino = no.getCusto() + no.getEstado().eval();
		
		return custoAtual.compareTo(custoDestino);
	}
}